package com.atguigu.gmall.search.vo;

import io.swagger.annotations.ApiModel;
import lombok.Data;

import java.math.BigDecimal;
import java.util.List;

/*
keyword=手机&wq=手机&ev=exbrand_华为（HUAWEI）%7C%7C小米（MI）%7C%7C荣耀（HONOR）%7C%7C诺基亚（NOKIA）%5Eexprice_1000-6000%5E3751_90887%7C%7C88228%7C%7C73965%5E5_180922%7C%7C159378%7C%7C183890%5E
&pvid=54add70c6141400c8ed99e452a549ca2&cid3=655&cid2=653&page=3&s=56&click=0

    String keyword: 搜索关键词
    List<Long> brandId: 品牌id列表
    Long cid: 分类id
    Integer sort: 排序方式
                0 ： 默认值   按照文档评分排序  _score
                1 :  价格 升序排列
                2 ：价格  降序排列
                3 ：创建时间 降序排列
                4 ： 销量 降序排列
     -- 检索属性： 可以选中多个检索属性  一个检索属性可以选中多个值
     --    props=5:128G-256G-512G&props=6:麒麟-高通
     List<String> props : 检索属性+值列表
     Integer pageNum : 页码
     Integer pageSize : 每页记录条数
     BigDecimal priceFrom : 起始价格
     BigDecimal priceTo : 结束价格
    Boolean store : 是否有货
    search?keyword=华为小米
        &brandId=1,2,3
        &cid=225
        &props=5:128G-256G-512G  -- attrId=5 并且attrId为5的检索属性值 为128/256/512
        &props=6:麒麟-高通
        &pirceFrom=1999
        &pageNum=1
        &pageSize=20
        &sort=0
     查询业务： esjava客户端 按照响应数据的要求 查询以下的数据：
            DSL： 检索属性的类型为nested，nested文档会单独的创建额外的文档保存，所以查询方式不一样

     响应页面需要的数据：
        goods列表：  id,标题(高亮)，副标题，默认图片，价格
        分页数据：  页码、每页记录条数、总记录条数
        聚合的桶：
                品牌桶：
                    一个品牌桶(小米)： id、logo、name
                分类桶：
                    一个分类桶(手机): id、name
                检索属性桶：
                    一个检索属性(运行内存)： name ， id   + List<String> attrs

 */
@Data
@ApiModel("搜索参数")
public class SearchParamVO {
    private String keyword;
    private List<Long> brandId;
    private Long cid;
    /*
     0 ： 默认值   按照文档评分排序  _score
    1 :  价格 升序排列
    2 ：价格  降序排列
    3 ：创建时间 降序排列
    4 ： 销量 降序排列
     */
    private Integer sort = 0;
    private List<String> props;
    private Integer pageNum = 1;
    private Integer pageSize = 8;
    private BigDecimal priceFrom;
    private BigDecimal priceTo;
    private Boolean store;
}
